package org.opengoofy.index12306.biz.ticketservice.service;

import org.opengoofy.index12306.biz.ticketservice.dto.req.CancelTicketOrderReqDTO;
import org.opengoofy.index12306.biz.ticketservice.dto.req.PurchaseTicketReqDTO;
import org.opengoofy.index12306.biz.ticketservice.dto.req.RefundTicketReqDTO;
import org.opengoofy.index12306.biz.ticketservice.dto.req.TicketPageQueryReqDTO;
import org.opengoofy.index12306.biz.ticketservice.dto.resp.RefundTicketRespDTO;
import org.opengoofy.index12306.biz.ticketservice.dto.resp.TicketPageQueryRespDTO;
import org.opengoofy.index12306.biz.ticketservice.dto.resp.TicketPurchaseRespDTO;
import org.opengoofy.index12306.biz.ticketservice.remote.dto.PayInfoRespDTO;

/**
 * @author ling007
 * @date 2024/5/31 14:12
 * @desciption:
 */
public interface TicketService {

    /**
     * 根据条件分页查询车票
     * @param requestParam
     * @return
     */
    TicketPageQueryRespDTO pageListTicketQueryV1(TicketPageQueryReqDTO requestParam);

    /**
     * 购买车票
     * @param requestParam
     * @return
     */
    TicketPurchaseRespDTO purchaseTicketsV1(PurchaseTicketReqDTO requestParam);

    /**
     * 执行购买车票
     * @param requestParam
     * @return
     */
    TicketPurchaseRespDTO executePurchaseTickets(PurchaseTicketReqDTO requestParam);

    /**
     * 取消订单
     * @param requestParam
     */
    void cancelTicketOrder(CancelTicketOrderReqDTO requestParam);

    /**
     * 获取支付信息
     * @param orderSn
     * @return
     */
    PayInfoRespDTO getPayInfo(String orderSn);

    /**
     * 公共退款接口
     * @param requestParam
     * @return
     */
    RefundTicketRespDTO commonTicketRefund(RefundTicketReqDTO requestParam);

    TicketPurchaseRespDTO purchaseTicketsV2(PurchaseTicketReqDTO requestParam);
}
